#博客编辑页面自动化测试
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
from Scripts.selenium.common import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from BologAutoTest.Common.Utils import BlogDriver


#登录状态
#正常发布
class BlogEdit:
    def __init__(self):
        #测试前要确保这个地址的博客存在
        self.url = "http://8.137.19.140:9090/blog_update.html?blogId=142872"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)
    def BlogEditNom(self):
        #先清除原本标题的内容，在进行新内容的更新
        titlebox = self.driver.find_element(By.CSS_SELECTOR, "#title")
        titlebox.clear()
        titlebox.send_keys("更新修改标题")
        #截图--1
        BlogDriver.getScreeShot()
        #
        # #尝试定位到内容编辑去并修改内容
        # # 先找到元素（不管可见不可见）
        # content_el = self.driver.find_element(By.CSS_SELECTOR, "#content")
        # # 手动检查 display 状态
        # is_hidden = self.driver.execute_script(
        #     "return window.getComputedStyle(arguments[0]).display === 'none';", content_el
        # )
        # #   控制台报错： raise AssertionError(AssertionError: Element #content 被设置为 display:none，因此不可交互。)
        # 由于运行面带会主动中断运行流程，所以将此段代码注释掉
        # if is_hidden:
        #     raise AssertionError(
        #         f"Element #content 被设置为 display:none，因此不可交互。"
        #     )
        # else:
        #     # 否则继续等待可点击
        #     try:
        #         content_box = WebDriverWait(self.driver, 10).until(
        #             EC.element_to_be_clickable(
        #                 (By.CSS_SELECTOR, "#content")
        #             )
        #         )
        #         print("页面加载完成，找到了内容编辑区")
        #         content_box.clear()
        #         content_box.send_keys("自动测试修改内容：7878")
        #         # 截图
        #         BlogDriver.getScreeShot()
        #         sleep(3)
        #     except TimeoutException as te:
        #         print("超时：页面未加载完成或未找到指定元素")
        #         使用 str(te) 获取完整错误信息
        #         print(f"详细信息：{str(te)}")
        #     except ElementNotInteractableException as e:
        #         使用 str(e) 获取完整错误信息
        #         print(f"元素不可交互：{str(e)}")
        #     except Exception as e:
        #         使用 str(e) 获取完整错误信息
        #         print(f"发生错误：{str(e)}")

        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        sleep(2)
        # 截图--2
        BlogDriver.getScreeShot()



#未登录状态

    def EditNotLogin(self):
        # 点击注销并截图
        self.driver.find_element(By.CSS_SELECTOR, "body > div.nav > a:nth-child(6)").click()
        # 截图--1
        BlogDriver.getScreeShot()
        sleep(1)

        self.driver.get("http://8.137.19.140:9090/blog_detail.html?blogId=142872")
        # 截图--2
        BlogDriver.getScreeShot()
        try:
            WebDriverWait(self.driver, 10).until(
                EC.presence_of_element_located(
                    (By.CSS_SELECTOR, "#submit")
                )
            )
            print("页面加载完成，找到了指定元素")
        except TimeoutException:
            print("超时：页面未加载完成或未找到指定元素")